
using Qdb.Foundation;
using Qdb.Internal;
using Qdb.Internal.Delete;
using Qdb.Internal.Handlers;
using Qdb.Internal.Marshall;
using Qdb.Internal.Slots;
using Qdb.Typehandlers;

namespace Qdb.Internal.Handlers
{
	/// <exclude></exclude>
	public interface IFieldAwareTypeHandler : IReferenceTypeHandler, IVersionedTypeHandler
		, ICascadingTypeHandler, IVirtualAttributeHandler
	{
		void AddFieldIndices(ObjectIdContextImpl context, Slot oldSlot);

		void CollectIDs(CollectIdContext context, IPredicate4 predicate);

		void DeleteMembers(DeleteContextImpl deleteContext, bool isUpdate);

		void ReadVirtualAttributes(ObjectReferenceContext context);

		void ClassMetadata(Qdb.Internal.ClassMetadata classMetadata);

		bool SeekToField(ObjectHeaderContext context, ClassAspect aspect);
	}
}
